from flask import *
from werkzeug.routing import BaseConverter

app = Flask(__name__)


class RegexConverter(BaseConverter):
    def __init__(self, url_map, *args):
        super(RegexConverter, self).__init__(url_map)
        # 传入正则,flask解析路由的时候,会从这里保存正则
        self.regex = args[0]
        print(self.regex)

    def to_python(self, value):
        # 对获取到的参数进行处理
        # 默认获取到是字符串，可以对获取到的参数进行处理，比如类型转换
        # 这样就可以在视图中直接使用
        # print(type(value)) #<class 'str'>
        print('to_python:', value)
        return value

    def to_url(self, value):
        # 当使用反解析的时候会调用这个方法,可以对参数进行处理
        print('to_url:', value)
        return value


app.url_map.converters['reg'] = RegexConverter


@app.route('/reg/<reg("\w{3}"):num3>')
def reg(num3):
    return str(num3)


app.run()
